OHI-Northeast | OHI Science | Citation policy
knitr::opts_chunk$set(fig.width = 6, fig.height = 4, fig.path = 'figs/', message = FALSE, warning = FALSE)
source('~/github/ne-prep/src/R/common.R') ### an OHINE specific version of common.RThis script creates the Iconic Species status data layer for use in the Sense of Place: Iconic Species subgoal. A list of 33 iconic species was created following input from multiple folks in the region. The Iconic Species status layer calculates the conservation status score (0 = extinct, 1 = least concern) for each of the iconic species.
We use NatureServe and IUCN conservation status (aka extinction risk) information.
Load the list of our iconic species. This list was created manually through consultation with folks in the region about iconic Northeast species.
iconic_list <- read_csv("data/iconic_species_list.csv") %>%
mutate(common = tolower(common),
scientific = tolower(scientific))Species range (i.e. where the species is found) and conservation status information comes from a layer in the Biodiversity - Species subgoal. The spp_status_scores.csv contains information about each species in our region, their conservation status and the associated score between 0 and 1 (where 0 is low extinction risk and 1 is extinct).
species_status <- read_csv("~/github/ne-scores/region/layers/spp_status_scores.csv")
#filter species status just for our iconic species
iconic_species_status1 <- species_status %>%
filter(common %in% iconic_list$common)
#filter based on scientific name
iconic_species_status2 <- species_status %>%
filter(tolower(sciname) %in% iconic_list$scientific)
#join and add Bald eagle to common. I guess the IUCN data only has the scientific name for bald eagle
iconic_species_status <- iconic_species_status1 %>%
bind_rows(iconic_species_status2) %>%
distinct() %>%
mutate(common = ifelse(sciname == "Haliaeetus leucocephalus", "bald eagle", common),
score = 1-score) %>% #the original scores from the SPP status are 0 (good) to 1 (bad/extinct). Here I reverse this so closer to 1 = better
select(common, sciname, rgn_id, rgn_name, score, year) %>%
filter(!is.na(rgn_name), #these are holdover rows from the status data in SPP where they were used to identify USA and/or IUCN
!is.na(score)) Did we get all 33 species?
## [1] "alewife" "american lobster"
## [3] "american shad" "arctic tern"
## [5] "atlantic bluefin tuna" "atlantic cod"
## [7] "atlantic herring" "atlantic puffin"
## [9] "atlantic sturgeon" "bald eagle"
## [11] "bottlenose dolphin" "common tern"
## [13] "fin whale" "great white shark"
## [15] "haddock" "horseshoe crab"
## [17] "humpback whale" "least tern"
## [19] "minke whale" "north atlantic right whale"
## [21] "osprey" "roseate tern"
## [23] "sandbar shark" "sperm whale"
## [25] "striped bass"
We only have 25 species in the spp_status_scores data. What are we missing?
## [1] "american oyster" "blue crab" "bay scallop"
## [4] "sea scallop" "atlantic surfclam" "soft shell clam"
## [7] "northern quahog" "atlantic salmon" "piping plover"
Everything we are missing is a harvested (commercially fished) species. We will use our stock scores for these species where available. The nmfs_stock_scores.csv dataset was created in the Seafood Provision - Wild-Caught Fisheries subgoal data prep.
stock_scores <- read_csv("~/github/ne-prep/prep/fis/data/nmfs_stock_scores.csv") %>%
select(year, stock, b_bmsy) %>%
mutate(score = ifelse(b_bmsy >=1, 1, b_bmsy)) %>%
separate(stock, into = c("common", "area"), sep = " - ") %>%
filter(tolower(common) %in% missing) %>%
select(common, score, year)
unique(stock_scores$common)## [1] "Atlantic salmon" "Atlantic surfclam" "Sea scallop"
Only three of the species have stock assessments from NMFS that we can use as scores. So looks like we are missing american oyster, blue crab, bay scallop, soft shell clam, and quahog.
iconic_species_status <- iconic_species_status %>%
bind_rows(stock_scores) %>%
mutate(common = tolower(common))We don’t care about how big or small the species range map is, if a species exists within an OHI region we will count it there.
spp_rgn_areas <- read_csv("~/github/ne-scores/region/layers/spp_rgn_areas.csv") %>%
filter(common %in% iconic_species_status$common) %>%
select(rgn_id, common, sciname, year)We are missing salmon and surfclam. For now let’s assume they are everywhere. Combine rgn_areas with the scores
salm_surf <- iconic_species_status %>%
filter(common %in% c("atlantic salmon", "atlantic surfclam")) %>%
group_by(common, score) %>%
complete(rgn_id = 1:11, year) %>%
select(common, score, rgn_id, year) %>%
mutate(sciname = case_when(
common == "atlantic salmon" ~ "Salmo salar",
common == "atlantic surfclam" ~ "Spissula solidissima"
))
spp_rgns_scores <- iconic_species_status %>%
left_join(spp_rgn_areas) %>%
left_join(spp_rgn_areas, by = "common") %>%
mutate(rgn_id = ifelse(is.na(rgn_id.x), rgn_id.y, rgn_id.x),
sciname = ifelse(is.na(sciname.x), sciname.y, sciname.x)) %>% #this fixes sea scallop
select(common, sciname, rgn_id, year = year.x, score) %>%
distinct() %>%
filter(!is.na(sciname)) %>%
bind_rows(salm_surf)We need to add all years even though we dont have any information that tells us status changes. So these scores will all be the same over the entire time period.
ico_layer <- spp_rgns_scores %>%
group_by(common, sciname, rgn_id, score) %>%
complete(year = 2005:2017) %>%
left_join(rgn_data)
ggplot(ico_layer, aes(x = year, y = score, color = common)) +
geom_line() +
theme_bw() +
facet_wrap(~rgn_name) +
theme(axis.text.x = element_text(angle = 90, hjust = 1))Since we see no changes over time let’s just look at 2017 in table form